fn main(){
    let mut ar = ["a".to_string(), "b".to_string()];
    // for item in ar.iter() // `.iter()` 方法把数组变成一个迭代器
    for item in &ar { // 与上等价
        print!("{} ", item); // item可看作是对ar中每个元素的不可变借用的解引用
    }
    println!("");

    // for item in ar.iter_mut() 
    for item in &mut ar { // 与上等价
        // item可看作是对ar中每个元素的可变借用的解引用
        item.push_str("x");
    }
    println!("{:?}", ar); // ["ax", "bx"]

    // 在循环中获取元素的索引
    for (i, item) in ar.iter().enumerate() {
        println!("{} {}", i, item);
    }

    for item in ar {// 把ar的每个元素绑定给item，会导致所有权转移
        continue; // item换绑时，没有所有者的变量被释放
    }
    // println!("{:?}", ar); // 错误。元素被转移

    // 如果通过下标遍历数组，那么越界检查会有些开销

    // loop永久循环
    let res = loop { // loop是表达式，可以返回值
        break "done"; // break可以带一个返回值
    };
    println!("{}", res);
}